#pragma once

#define BASEVALUE_PAWN 50
#define BASEVALUE_BISHOP 200
#define BASEVALUE_ELEPHANT 200
#define BASEVALUE_CAR 800
#define BASEVALUE_HORSE 400
#define BASEVALUE_CANON 400
#define BASEVALUE_KING 10000

#define FLEXIBILITY_PAWN 10
#define FLEXIBILITY_BISHOP 1
#define FLEXIBILITY_ELEPHANT 1
#define FLEXIBILITY_CAR 8
#define FLEXIBILITY_HORSE 15
#define FLEXIBILITY_CANON 4
#define FLEXIBILITY_KING 0

struct POINT
{
	int x;
	int y;
};
extern void initEveluate();
extern int Eveluate(int position[10][9], bool bIsRedTurn);
extern int GetRelatePiece(int position[10][9],int j, int i);
extern bool CanTouch(int position[10][9], int nFromX, int nFromY, int nToX, int nToY);	
extern void AddPoint(int x, int y);
extern int GetBingValue(int x, int y, int CurSituation[][9]);
extern int m_BaseValue[15];
extern int m_FlexValue[15];
extern short m_AttackPos[10][9];
extern int m_GuardPos[10][9];
extern int m_FlexibilityPos[10][9];
extern int m_chessValue[10][9];
extern int nPosCount;
extern POINT RelatePos[20];